問題七 為什麼 Angular 變數怎麼設定都是 undefined?
你在前面進行宣告並初始化,但是後面 log 出來的變數卻還是 undefined,這不是 Angular 有問題,這個原因是 $scope 不同。
但是為什麼會不同呢?明明變數都是 $scope 開頭,難道還有什麼其他的 $scope 嗎?問題就在於打包的套件!當你在使用套件的時候,裡面的 $scope 如果有繼承,在套件內要使用外面的父節點的 $scope ,則必須加上 $parent 才能存取。
但 是如果是沒有繼承呢?那可能就需要看第三方套件有沒有提供傳輸數值的功能,不然就只能改 API 囉!我下面準備了一個今天實習時碰到的問題,ui- bootstarp 的 Model 內部的 $scope 是獨立的,它沒有繼承到任何的 $scope ,所幸他有提供傳輸數值的功能才能解決問題。
範例中我最前面宣告了全域變數並初始化
$scope.ironman7 = 1
我們利用 $log 來 log 在 Model 中的數值
$log.info('Modal inside at: ' + new Date()+ "======> " +$scope.ironman7 );
但是 log 出來會向下面這樣
"Modal inside at: Tue Sep 23 2014 23:01:24 GMT+0800======> undefined"
表示它根本沒有存取到 $scope.ironman7
在這個例子如果有要傳回數值 ,請利用 $close(result) 跟 modalInstance.result.then(function (selectedItem) { ... 這兩個部份來傳輸 ,就不詳細說明了。
http://plnkr.co/edit/1M3U5fFmpnsuCjLOF8r9?p=preview